#============================================
# #知识点
#4、五层协议
# 计算机1 <=======================>  计算机2 
# 应用层                             应用层
# 传输层                             传输层
# 网络层                             网络层
# 数据链路层                        数据链路层
# 物理层 <==========================> 物理层
#============================================
# 1、物理层负责发送电信号
# 一组物理层数据称之为:位
# 单纯的电信号毫无意义，必须对其进行分组
#============================================
# 2、数据链路层: ethernet以太网协议(局限性，只能在局域网中找mac地址,也就是一台机器)
# 规定1: -组数据称之为一个数据帧
# 规定2:数据帧分成两部分=》头+数据
# 头包含:源地址与目标地址，该地址是mac地址
# 规定3:规定但凡接入互联网的主机必须有一块网卡，每块网卡在出厂时都烧制好一个全世界,独一无二的地址，该地址成为mac地址
# 注意:计算机通信基本靠吼，即以太网协议的工作方式是广播
#============================================
# 3、网络层: IP协议(定位一个子局域网)
# 要达到的目的:
# 划分广播域
# 每一个广播域但凡要接通外部，一定要有一个网关帮内部的计算机转发包到公网
# 网关与外界通信走的是路由协议
# 规定1:一组数据称之为一个数据包
# 规定2:数据帧分成两部分=》头+数据
# 头包含:源地址与目标地址，该地址是IP地址
# 数据包含的:传输层发过来的整体的内容

#ipv4地址:
# 一个合法的ipV4地址组成部分=ip地址/子网掩码地址
# 列入
# 172.16.10.1:       10101100.00010000. 00001010. 000000001  #ip地址
# 255255.255.255.0:  11111111. 11111111. 11111111. 000000000  #子网掩码
# 172.16.10.0:       101011 00.00010000. 00001010.000000000   #通过ip地址与子网掩码，算出网络地址，用来区分广播域

#ARP协议:广播的方式发送数据包，获取目标主机的mac地址
#假设俩台计算机在同一个局域网
# ARP:
# 自己的ip,对方的ip
# 1、计算二者网络地址，如果一样，拿到计算机2的mac地址就可以了
# 2、发送广播包
# 发送端mac   (获取接收端mac地址)FF:FF:FF:FF:FF:FF    172.16.10.10/24  172.16.10.11/24   数据

#假设俩台计算机不在同一个局域网
# ARP:
# 自己的ip,对方的ip
# 1、计算二者网络地址，如果不一样，就得拿到网关的的mac地址
# 2、发送广播包
# 发送端mac   网关的mac地址   172.16.10.10/24  172.16.10.11/24   数据
#============================================
# 根据ip地址与mac地址就可以标识全世界独一无二的计算机地址
#或者
#根据ip地址就可以定位道计算机地址，因为ip地址通过ARP协议，就可以解析并定位到想要的mac地址
#============================================
# 4、传输层:tcp\udp=》 基于端口
# tcp:
# 端口范围0- 65535，0-1023为系统占用端口
# ip+port=》标识全世界范围内独一无二的一个基于网络通信的应用程序
# 基于tcp协议通信之前:必须建立一个双向通信的链接
# C------------------>S
# C<------------------S
# 三次握手建立链接:
# 建立链接是为了传数据做准备的，三次握手即可
# syn_sent发送
# syn_rcvd接收
# listen 等待接收
# establ同意建立

# 四次挥手断开链接
# 断开链接时，由于链接内有数据传输，所以必须分四次断开


# tcp是可靠传输的
# 发送数据必须等到对方确认后才算完成，才会将自己内存中的数据清理掉
# udp:传输快，不需要搭建链接，传数据不需要确认对方是否接收到直接清理自己内存的数据(用于qq聊天....)
# ps:当服务端大量处于TIME_ WAIT状态时意味着服务端正在经历高并发
# 在客户端给向服务端发请求，有一个tcp半链接池(backlog),来缓冲请求数据
# ip+port==>可以标识基于网络通信的全世界独一无二的软件
#============================================
# 5、应用层:
# 可以自定义协议=》头部+数据部分
# 自定义协议需要注意的问题:
# 1、两大组成部分=头部+数据部分
# 头部:放对数据的描述信息
# 比如:数据要发给谁，数据的类型，数据的长度
# 数据部分:想要发的数据
# 2、头部的长度必须固定
# 因为接收端要通过头部获取所接接收数据的详细信息
#============================================

